/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package stack;

/**
 *
 * @author Mardiego
 */
public class ListaCircular<E> extends CadenaGeneral {
    public NodoCircular<E> tail;
    public int contador;
    
    public ListaCircular()
    {
        tail=null;
        contador=0;
    }

    public void push(Object item) {
        NodoCircular temp=new NodoCircular(item, null);
        if (tail==null)
        {
            tail=temp;
            tail.setSiguiente(tail);
        }
        else
        {
        temp.setSiguiente(tail.darSiguiente());
        tail.setSiguiente(temp);
        }
        contador++;
    }

    @Override
    public E pop() {
        if (contador!=0)
        {
            contador--;
        }
        try
        {
            NodoCircular<E> temp=tail.darSiguiente();
            if (temp==tail)
            {
                tail.setSiguiente(null);
                return temp.darValor();
            }
            else
            {
                tail.setSiguiente(temp.darSiguiente());
                return temp.darValor();
            }
        }
        catch(Exception e)
        {
            return null;
        }
    }

    @Override
    public Object peek() {
        try
        {
        return tail.darSiguiente().darValor();
        }
        catch(Exception e)
        {
            return null;
        }
    }

    @Override
    public int size() {
        return contador;
    }
    
}
